﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace Model
{
    [Serializable()]
    public class Artikel : ISerializable
    {
        //De naam van het artikel
        private string naam;
        private string klasse;
        private double prijs;
        private int volume;
        private string categorie;

        /// <summary>
        /// Standaard constructor
        /// </summary>
        public Artikel()
        {
        }

        public Artikel(string naam, string klasse, double prijs, int volume, string categorie)
        {
            this.naam = naam;
            this.klasse = klasse;
            this.prijs = prijs;
            this.volume = volume;
            this.categorie = categorie;
        }

        /// <summary>
        /// Constructor voor het deserializen van de fields
        /// </summary>
        /// <param name="info"></param>
        /// <param name="ctxt"></param>
        public Artikel(SerializationInfo info, StreamingContext ctxt)
        {
            this.naam = (string)info.GetValue("Naam", typeof(string));
            this.categorie = (string)info.GetValue("Categorie", typeof(string));
            this.klasse = (string)info.GetValue("Klasse", typeof(string));
            this.prijs = (double)info.GetValue("Prijs", typeof(double));
            this.volume = (int)info.GetValue("Volume", typeof(int));
        }

        /// <summary>
        /// Methode voor de fields toe te voegen aan het serializen
        /// </summary>
        /// <param name="info"></param>
        /// <param name="ctxt"></param>
        public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {
            info.AddValue("Naam", this.naam);
            info.AddValue("Categorie", this.categorie);
            info.AddValue("Klasse", this.klasse);
            info.AddValue("Prijs", this.prijs);
            info.AddValue("Volume", this.volume);
        }

        /// <summary>
        /// Property voor Naam
        /// </summary>
        public string Naam
        {
            get { return naam; }
            set { naam = value; }
        }

        /// <summary>
        /// Property voor Categorie
        /// </summary>
        public string Categorie
        {
            get { return categorie; }
            set { categorie = value; }
        }

        /// <summary>
        /// De klasse van het artikel
        /// </summary>
        public string Klasse
        {
            get { return klasse; }
            set { klasse = value; }
        }

        /// <summary>
        /// De prijs van het artikel
        /// </summary>
        public double Prijs
        {
            get { return prijs; }
            set { prijs = value; }
        }

        /// <summary>
        /// Het volume van het artikel
        /// </summary>
        public int Volume
        {
            get { return volume; }
            set { volume = value; }
        }
    }
}
